/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is Forte for Java, Community Edition. The Initial
* Developer of the Original Code is Sun Microsystems, Inc. Portions
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.apisupport;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.jar.*;
import javax.swing.SwingUtilities;
import javax.swing.event.*;
import org.openide.loaders.*;
import org.openide.modules.ModuleDescription;
import org.openide.nodes.*;
import org.openide.util.*;
import org.netbeans.modules.jarpackager.*;
public class ModuleDataNode extends JarDataObject.JarNode {
private ChangeListener list, list2;
public ModuleDataNode(ModuleDataObject obj) {
this (obj, new ManifestProvider.CategoryChildren ((ManifestProvider) obj.getCookie (ManifestProvider.class)));
}
public ModuleDataNode(ModuleDataObject obj, Children ch) {
super (obj, ch);
ManifestProvider.Util.updateName (this);
ManifestProvider provider = (ManifestProvider) getCookie (ManifestProvider.class);
provider.addChangeListener (WeakListener.change (list2 = new ChangeListener () {
public void stateChanged (ChangeEvent ev) {
updateIcon ();
}
}, provider));
updateIcon ();
}
private void updateIcon () {
if (SwingUtilities.isEventDispatchThread ()) {
RequestProcessor.postRequest (new Runnable () {
public void run () {
updateIcon ();
}
});
return;
}
if (ManifestProvider.Util.checkForException ((ManifestProvider) getCookie (ManifestProvider.class)) == null)
setIconBase ("/org/netbeans/modules/apisupport/resources/ModuleDataIcon");
else
setIconBase ("/org/netbeans/modules/apisupport/resources/ModuleDataIconError");
}
protected Sheet createSheet () {
Sheet sheet = super.createSheet ();
ManifestProvider provider = (ManifestProvider) getCookie (ManifestProvider.class);
ManifestProvider.Util.addToSheet (sheet, provider);
provider.addChangeListener (WeakListener.change (list = new ChangeListener () {
public void stateChanged (ChangeEvent ev) {
fPC ();
}
}, provider));
return sheet;
}
private void fPC () {
firePropertyChange (null, null, null);
}
}
/*
* Log
* 9 Gandalf-post-FCS1.7.1.0 4/16/00 Jesse Glick Hopefully avoiding a
* deadlock after reloading a manifest file, and some other
* threading-related stuff.
* 8 Gandalf 1.7 1/26/00 Jesse Glick Live manifest parsing.
* 7 Gandalf 1.6 1/26/00 Jesse Glick Manifest handling
* changed--now more dynamic, synched properly with open document as for
* real file types.
* 6 Gandalf 1.5 1/22/00 Jesse Glick Manifest files can now
* be recognized, not just JARs.
* 5 Gandalf 1.4 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun
* Microsystems Copyright in File Comment
* 4 Gandalf 1.3 9/30/99 Jesse Glick Package rename and misc.
* 3 Gandalf 1.2 9/20/99 Jesse Glick CategoryChildren public,
* mostly for testing.
* 2 Gandalf 1.1 9/20/99 Jesse Glick New resources package.
* 1 Gandalf 1.0 9/17/99 Jesse Glick
* $
*/